﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Controls;
using System.Windows;
using CommomFunctions;
using System.Windows.Media;

namespace Listas
{
    public enum ButtonClicked
    {
        Create,
        Destroy,
        InsertAt,
        InsertFirst,
        InsertLast,
        RemoveAt,
        RemoveFirst,
        RemoveLast        
    }

    public class Buttons : CommomFunctions.Buttons
    {
        public static void updateButtons(Button[] btns, ButtonClicked[] inds, bool p)
        {
            for (int i = 0; i < inds.Count(); i++)
            {
                btns[(int)inds[i]].IsEnabled = p;
            }
        }

        public static void btnDestroi_Click(Button[] btns, ControlVariables cv)
        {
            cv.setAllHidden();
            cv.resetCounters();
            cv.initComboBoxes();
            cv.initFreeMemory();
            
            desabilitaBotoes(btns);
            btns[(int)ButtonClicked.Create].IsEnabled = true;
            
            cv.rebuild();
            
            ControlVariables.setAllImagesHidden();
            cv.writeToTrace(ButtonClicked.Destroy);            
        }

        public static void btnCria_Click(Button[] btns, ControlVariables cv)
        {
            cv.initializeNullImages();            
            
            habilitaBotoes(btns);
            btns[(int)ButtonClicked.Create].IsEnabled = false;

            cv.inicializaMemoriaLivre();
            cv.writeToTrace(ButtonClicked.Create);

        }

        public static void btnInsertFirst_Click(ControlVariables cv)
        {
            cv.insertionOperation(0);
        }

        public static void btnInsertLast_Click(ControlVariables cv)
        {
            cv.insertionOperation(cv.myListSize);
        }

        public static void btnInsertAt_Click(ComboBoxes myCbs, ControlVariables cv)
        {
            if (myCbs.cbAtSelectedIndex < 0)
            {
                MessageBox.Show("Você deve selecionar a posição desejada.");
                return;
            }

            cv.insertionOperation(myCbs.cbAtSelectedIndex);
        }

        public static void btnRemoveFirst_Click(ControlVariables cv)
        {
            cv.RemovalOperation(0);
        }

        public static void btnRemoveLast_Click(ControlVariables cv)
        {
            cv.RemovalOperation(cv.cont - 1);
        }

        public static void btnRemoveAt_Click(ComboBoxes myCbs, ControlVariables cv)
        {
            if (myCbs.cbRemoveAtSelectedIndex < 0)
            {
                MessageBox.Show("Você deve selecionar a posição desejada.");
                return;
            }
            cv.RemovalOperation(myCbs.cbRemoveAtSelectedIndex);

        }
        

    }
}
